<?php
namespace Server\Entity;

use Base\Entity\AbstractEntity;
use Doctrine\ORM\Mapping as ORM;

use Zend\Stdlib\Hydrator\ClassMethods;

/**
 * Contato
 *
 * @ORM\Table(name="contato")
 * @ORM\Entity(repositoryClass="Server\Repository\ContatoRepository")
 */
class Contato extends AbstractEntity {
	
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=45, nullable=false)
     */
    protected $nome;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=70, nullable=false)
     */
    protected $email;
    
    /**
     * @var string
     *
     * @ORM\Column(name="telefone", type="string", length=45, nullable=false)
     */
    protected $telefone;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="criado_em", type="datetime", nullable=false)
     */
    protected $criadoEm;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="atualizado_em", type="datetime", nullable=false)
     */
    protected $atualizadoEm;
    

	public function __construct(array $options = array()) {
    
    	$this->criadoEm = new \DateTime("now");
    	$this->atualizadoEm = new \DateTime("now");
    
    	$hydrator = new ClassMethods();
    	$hydrator->hydrate($options,$this);
    }


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nome
     *
     * @param string $nome
     * @return Contato
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    
        return $this;
    }

    /**
     * Get nome
     *
     * @return string 
     */
    public function getNome()
    {
        return $this->nome;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return Contato
     */
    public function setEmail($email)
    {
        $this->email = $email;
    
        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }
    
    
    /**
     * Set telefone
     *
     * @param string $telefone
     * @return Contato
     */
    public function setTelefone($telefone)
    {
    	$this->telefone = $telefone;
    
    	return $this;
    }
    
    /**
     * Get telefone
     *
     * @return string
     */
    public function getTelefone()
    {
    	return $this->telefone;
    }

    /**
     * Set criadoEm
     *
     * @param \DateTime $criadoEm
     * @return Contato
     */
    public function setCriadoEm($criadoEm)
    {
        $this->criadoEm = $criadoEm;
    
        return $this;
    }

    /**
     * Get criadoEm
     *
     * @return \DateTime 
     */
    public function getCriadoEm()
    {
        return $this->criadoEm;
    }

    /**
     * Set atualizadoEm
     *
     * @param \DateTime $atualizadoEm
     * @return Contato
     */
    public function setAtualizadoEm($atualizadoEm)
    {
        $this->atualizadoEm = $atualizadoEm;
    
        return $this;
    }

    /**
     * Get atualizadoEm
     *
     * @return \DateTime 
     */
    public function getAtualizadoEm()
    {
        return $this->atualizadoEm;
    }    
    
    /**
     * @Override
     * (non-PHPdoc)
     * @see \Base\Entity\AbstractEntity::toArray()
     */
    public function toArray() {
    	
    	return array(
    			'id'    => $this->getId(),
    			'nome'  => $this->getNome(),
    			'email' => $this->getEmail(),
    			'telefone' => $this->getTelefone()
    	);
    }
}
